package com.demo.service.system;

import java.util.List;

import com.demo.dto.Pager;
import com.demo.exception.ServiceLayerException;
import com.demo.model.system.Admin;
import com.demo.model.system.AdminExample;

public interface AdminService {
	/**
	 * 添加一个管理员
	 * @param record
	 * @return
	 * @throws ServiceLayerException 
	 */
	int add(Admin record) throws ServiceLayerException;

	/**
	 * 修改单个管理员信息
	 * @param record
	 * @return
	 * @throws ServiceLayerException 
	 */
	int update(Admin record) throws ServiceLayerException;

	/**
	 * 批量启用管理员
	 * @param ids
	 * @return
	 * @throws ServiceLayerException 
	 */
	int enable(List<Integer> ids) throws ServiceLayerException;

	/**
	 * 批量停用管理员
	 * @param ids
	 * @return
	 * @throws ServiceLayerException 
	 */
	int disable(List<Integer> ids) throws ServiceLayerException;

	/**
	 * 重设管理员密码
	 * @param record
	 * @return
	 * @throws ServiceLayerException 
	 */
	int resetPwd(Admin record) throws ServiceLayerException;
	
	/**
	 * 根据主键查询单条管理员记录
	 * @param id
	 * @return
	 * @throws ServiceLayerException 
	 */
	Admin getById(Integer id) throws ServiceLayerException;
	
	/**
	 * 根据主键查询单条管理员记录(级联管理员角色信息)
	 * @param id
	 * @return
	 * @throws ServiceLayerException 
	 */
	Admin getWithRolesById(Integer id) throws ServiceLayerException;
	
	/**
	 * 根据主键查询单条管理员记录(包含管理员权限信息)
	 * @param id
	 * @return
	 * @throws ServiceLayerException 
	 */
	Admin getWithResourcesById(Integer id) throws ServiceLayerException;

	/**
	 * 查询符合条件的管理员记录列表
	 * @param example
	 * @return
	 */
	List<Admin> findByCondition(AdminExample example);
	
	/**
	 * 分页查询符合条件的管理员记录列表
	 * @param example
	 * @param pager
	 * @return
	 * @throws ServiceLayerException 
	 */
	Pager<Admin> findByPage(AdminExample example, Pager<Admin> pager) throws ServiceLayerException;

	/**
	 * 查询符合条件的管理员记录的数量
	 * @param example
	 * @return
	 */
	int getCount(AdminExample example);
}
